Stratified K-Fold Cross-Validation

Machine Learning - সাইকিট-লার্ন (Scikit-Learn) - Train-Test Split এবং Cross-Validation
292

Stratified K-Fold Cross-Validation একটি উন্নত রূপ K-Fold Cross-Validation এর, যা বিশেষভাবে ক্লাস ইমব্যালেন্স (class imbalance) সমস্যার সমাধান করতে ব্যবহৃত হয়। K-Fold Cross-Validation এমন একটি কৌশল যেখানে ডেটা কে K সংখ্যক ফোল্ডে ভাগ করা হয় এবং প্রতিটি ফোল্ডে একটি নির্দিষ্ট অংশ ট্রেনিং এবং বাকি অংশ টেস্টিং হিসেবে ব্যবহৃত হয়। Stratified K-Fold Cross-Validation এই পদ্ধতির একটি উন্নত রূপ যেখানে প্রতিটি ফোল্ডের মধ্যে লেবেলস বা ক্লাস এর একটি সমান ভগ্নাংশ (proportional split) রাখা হয়।

এটি বিশেষভাবে ব্যবহৃত হয় যখন ক্লাসে ভারসাম্য না থাকে, অর্থাৎ কিছু ক্লাস অন্যান্য ক্লাসগুলোর চেয়ে অনেক বেশি উপস্থিত থাকে (যেমন, স্প্যাম বা নন-স্প্যাম ক্লাসে ইমেইল ডেটাতে)। এই অবস্থায় Stratified K-Fold নিশ্চিত করে যে প্রতিটি ফোল্ডে ক্লাসের অনুপাত মূল ডেটাসেটের মতোই থাকবে।


Stratified K-Fold Cross-Validation এর প্রক্রিয়া

  1. ডেটা ভাগ করা:
    ডেটাকে K সংখ্যক সমান অংশে ভাগ করা হয়। তবে, Stratified K-Fold Cross-Validation নিশ্চিত করে যে প্রতিটি ফোল্ডে মূল ডেটাসেটের মতোই ক্লাসের অনুপাত থাকবে। উদাহরণস্বরূপ, যদি আপনার ডেটাসেটে 70% ক্লাস 1 এবং 30% ক্লাস 2 থাকে, তবে প্রতিটি ফোল্ডে একই অনুপাত বজায় থাকবে।
  2. মডেল ট্রেনিং এবং টেস্টিং:
    প্রতিটি ফোল্ডকে একবার টেস্ট সেট হিসেবে এবং বাকি ফোল্ডগুলোকে ট্রেনিং সেট হিসেবে ব্যবহার করা হয়। এই প্রক্রিয়া মোট K বার করা হয়, এবং প্রতিবার আলাদা ফোল্ড টেস্ট সেট হিসেবে ব্যবহৃত হয়।
  3. পারফরম্যান্স পরিমাপ:
    প্রতিটি ফোল্ডে মডেলের পারফরম্যান্স মূল্যায়ন করা হয় এবং সমস্ত ফোল্ডের ফলাফল গড়ে নিয়ে একটি সামগ্রিক পারফরম্যান্স স্কোর তৈরি করা হয়।

Stratified K-Fold Cross-Validation এর সুবিধা

  • ক্লাস ইমব্যালেন্স মোকাবেলা করা:
    Stratified K-Fold নিশ্চিত করে যে প্রতিটি ফোল্ডে ক্লাসের অনুপাত ঠিক থাকে, যা ক্লাস ইমব্যালেন্স সমস্যা সমাধান করতে সাহায্য করে এবং মডেলের সঠিক মূল্যায়ন নিশ্চিত করে।
  • একটি নির্ভরযোগ্য পারফরম্যান্স পরিমাপ:
    এই পদ্ধতি K ফোল্ডে ক্রস-ভ্যালিডেশন পরিচালনা করার ফলে মডেলের পারফরম্যান্সের একটি স্থিতিশীল এবং নির্ভরযোগ্য পরিমাপ প্রদান করে।
  • ডেটার সর্বোচ্চ ব্যবহার:
    প্রতিটি ডেটা পয়েন্ট একাধিকবার ট্রেনিং এবং টেস্টিং সেট হিসেবে ব্যবহৃত হয়, যা মডেলের সাধারণীকরণ ক্ষমতা বাড়ায়।

Scikit-Learn এ Stratified K-Fold Cross-Validation ব্যবহার

Scikit-Learn লাইব্রেরিতে StratifiedKFold ক্লাস প্রদান করা হয়েছে, যা এই পদ্ধতি ব্যবহার করতে সহায়ক। এখানে কিভাবে এটি ব্যবহার করা হয় তার একটি উদাহরণ:

from sklearn.model_selection import StratifiedKFold
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# একটি কৃত্রিম ডেটাসেট তৈরি করা
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, 
                            n_clusters_per_class=1, weights=[0.9, 0.1], random_state=42)

# Stratified K-Fold Cross-Validation
kf = StratifiedKFold(n_splits=5)  # 5 ফোল্ডে ভাগ করা

# মডেল তৈরি
model = LogisticRegression()

# প্রতিটি ফোল্ডে ট্রেনিং এবং টেস্টিং করা
accuracies = []
for train_index, test_index in kf.split(X, y):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    
    # মডেল প্রশিক্ষণ
    model.fit(X_train, y_train)
    
    # টেস্ট ডেটাতে পূর্বাভাস
    y_pred = model.predict(X_test)
    
    # একুরেসি মাপা
    accuracies.append(accuracy_score(y_test, y_pred))

# ফলাফল
print(f"Average accuracy: {sum(accuracies)/len(accuracies)}")

কোড ব্যাখ্যা:

  1. make_classification(): এটি একটি কৃত্রিম ডেটাসেট তৈরি করতে ব্যবহৃত হয়, যা দুটি শ্রেণী সহ একটি ক্লাসিফিকেশন সমস্যা তৈরি করে।
  2. StratifiedKFold(n_splits=5): ডেটাকে 5 টি ফোল্ডে ভাগ করে, এবং প্রতিটি ফোল্ডে ক্লাসের অনুপাতের সমানতা বজায় রাখে।
  3. kf.split(X, y): এই ফাংশনটি X (ইনপুট ফিচার) এবং y (লেবেল) এর জন্য ট্রেন এবং টেস্ট ইনডেক্স প্রদান করে।
  4. accuracy_score(): মডেলের পূর্বাভাস এবং আসল ফলাফলের মধ্যে একুরেসি হিসাব করা হয়।

সারাংশ

Stratified K-Fold Cross-Validation একটি শক্তিশালী কৌশল, যা মডেলের মূল্যায়নের সময় ক্লাস ইমব্যালেন্স সমস্যা সমাধান করে এবং মডেলের পারফরম্যান্সের সঠিক মূল্যায়ন নিশ্চিত করে। এটি বিশেষত কেসগুলিতে গুরুত্বপূর্ণ যেখানে ডেটাসেটে বিভিন্ন শ্রেণীর অনুপাত অসমতল থাকে। Scikit-Learn এ এটি খুবই সহজভাবে ব্যবহার করা যায় এবং মডেল প্রশিক্ষণ ও টেস্টিং এর জন্য একটি নির্ভরযোগ্য উপায় সরবরাহ করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...